package com.sdweizan.sdk.bytedance.bean.notify;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.EqualsAndHashCode;

/** 通用交易-订单支付状态回调** */
@EqualsAndHashCode(callSuper = true)
@Data
public class BdOrderPaymentResultNotifyRequest extends BdBaseNotify {
  public Msg getMessage() {
    return JSON.parseObject(super.getMsg(), Msg.class);
  }

  @Data
  class Msg {
    /** 小程序 app_id* */
    @JSONField(name = "app_id")
    private String appId;

    /** 开发者系统生成的订单号，与抖音开平交易单号 order_id 唯一关联* */
    @JSONField(name = "out_order_no")
    private String outOrderNo;

    /** 抖音开平侧订单id* */
    @JSONField(name = "order_id")
    private String orderId;

    /** 支付结果状态，目前有两种状态： "SUCCESS" （支付成功 ） "CANCEL" （支付取消）* */
    private String status;

    /** 订单总金额* */
    @JSONField(name = "total_amount")
    private Long totalAmount;

    /** 订单优惠金额，单位分，接入营销时请关注这个字段* */
    @JSONField(name = "discount_amount")
    private Long discountAmount;

    /** 支付渠道枚举（支付成功时才有）：1：微信 2：支付宝 10：抖音支付* */
    @JSONField(name = "pay_channel")
    private Integer payChannel;

    /** 渠道支付单号，如微信/支付宝的支付单号* */
    @JSONField(name = "channel_pay_id")
    private String channelPayId;

    /** 该笔交易的卖家商户号* */
    @JSONField(name = "merchant_uid")
    private String merchantUid;

    /** 该笔交易取消原因，如："USER_CANCEL"：用户取消 "TIME_OUT"：超时取消* */
    private String message;

    /** 用户支付成功/支付取消时间戳，单位为毫秒* */
    @JSONField(name = "event_time")
    private Long eventTime;

    /** 对应用户抖音账单里的"支付单号" 注：status="SUCCESS"时一定有值* */
    @JSONField(name = "user_bill_pay_id")
    private String userBillPayId;
  }
}
